/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/*
 * frmTablaAuxiliar.java
 *
 * Created on 19-ago-2011, 19:03:24
 */

package GUI;

import TablasAuxiliares.TACamposPremisas;
import TablasAuxiliares.TAHobbies;
import Util.GestorErrores;
import java.awt.Frame;
import java.util.Vector;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Javi
 */
public class frmTACamposPremisas extends javax.swing.JDialog {

    //Referencia a un objeto que maneja la tabla asociada de la BD
    private TACamposPremisas _oTACamposPremisas;

    //Referencia al formulario de detalle (hijo)
    private frmTACamposPremisasDet _frmTACamposPremisasDet = null;
    
    //Referencias a los vectores que utiliza el JTable para mostrar la cuadrícula de datos.
    private Vector _columnIdentifiers;
    private Vector _dataVector;
    
    private int _iFila; //Fila de la tabla a actualizar/borrar. -1 si es una inserción

    public frmTACamposPremisas() {
        //Los datos del panel de datos se cargan en este método
        initComponents();
        getRootPane().setDefaultButton(jButtonAnadir);
    }

    public frmTACamposPremisas( Frame parent, boolean modal ) {
        super(parent, modal);
        this.inicializaFormulario();
    }

    private void inicializaFormulario(){
        this._oTACamposPremisas = new TACamposPremisas();
        this.setTitle( this._oTACamposPremisas.getsDescripTabla() );
        //Aqui se crean los vectores.
        this._columnIdentifiers = new Vector ();
        this._dataVector = new Vector ();
        initComponents();
        getRootPane().setDefaultButton(jButtonAnadir);
    }

    
    public TACamposPremisas getoObjetoDatos() {
        return _oTACamposPremisas;
    }

    /*
     * Recarga el panel de datos a partir de las tablas de la BD, aplicando la condición que recibe como parámetro
     */
    public void actualizarVista(String sCondWhere){
        //Inicializo los vectores
        this._columnIdentifiers.clear();
        this._dataVector.clear();
        //Actualizo la condición que utiliza el selectAll
        this._oTACamposPremisas.setsCondWhere(sCondWhere);
        //Inicializo el vector global de errores
        GestorErrores.getInstancia().getvErrores().clear();
        //Recuperar la información de la tabla (los nombres de campos y los datos)
        boolean bCargaOK = this._oTACamposPremisas.selectAll( this._columnIdentifiers, this._dataVector );
        if (!bCargaOK){
            //Si ha habido errores informo de ellos
            String mensaje = "¡Error al cargar los datos!" + "\n";
            for (int i= 0; i< GestorErrores.getInstancia().getvErrores().size(); i++)
                mensaje = mensaje + GestorErrores.getInstancia().getvErrores().get(i) + "\n";
            JOptionPane.showMessageDialog( null, mensaje,"Error", JOptionPane.ERROR_MESSAGE);
        }
        DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
        //Una vez cargados los datos en los vectores, éstos se ASOCIAN a los vectores de datos del JPanel
        //para mostrarlos en pantalla
        md.setDataVector( _dataVector, _columnIdentifiers );
        md.fireTableDataChanged();
    }

    /** This method is called from within the constructor to
     * initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is
     * always regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jToolBar1 = new javax.swing.JToolBar();
        jButtonAnadir = new javax.swing.JButton();
        jButtonConsultar = new javax.swing.JButton();
        jButtonModificar = new javax.swing.JButton();
        jButtonBorrar = new javax.swing.JButton();
        jSeparator1 = new javax.swing.JToolBar.Separator();
        jButtonCerrar = new javax.swing.JButton();
        panelTabla = new javax.swing.JPanel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTableDatos = new javax.swing.JTable();

        jToolBar1.setFloatable(false);
        jToolBar1.setRollover(true);

        jButtonAnadir.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Alta.gif"))); // NOI18N
        jButtonAnadir.setText("Alta");
        jButtonAnadir.setToolTipText("Alta");
        jButtonAnadir.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonAnadirActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonAnadir);

        jButtonConsultar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Consulta.gif"))); // NOI18N
        jButtonConsultar.setText("Consultar");
        jButtonConsultar.setToolTipText("Consultar");
        jButtonConsultar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonConsultarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonConsultar);

        jButtonModificar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Modificacion.gif"))); // NOI18N
        jButtonModificar.setText("Modificar");
        jButtonModificar.setToolTipText("Modificar");
        jButtonModificar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonModificarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonModificar);

        jButtonBorrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Baja.gif"))); // NOI18N
        jButtonBorrar.setText("Borrar");
        jButtonBorrar.setToolTipText("Borrar");
        jButtonBorrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonBorrarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonBorrar);
        jToolBar1.add(jSeparator1);

        jButtonCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/Recursos/Volver.gif"))); // NOI18N
        jButtonCerrar.setText("Volver");
        jButtonCerrar.setToolTipText("Volver");
        jButtonCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButtonCerrarActionPerformed(evt);
            }
        });
        jToolBar1.add(jButtonCerrar);

        jTableDatos.setModel(new ModeloTabla());
        jTableDatos.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
        jScrollPane1.setViewportView(jTableDatos);

        javax.swing.GroupLayout panelTablaLayout = new javax.swing.GroupLayout(panelTabla);
        panelTabla.setLayout(panelTablaLayout);
        panelTablaLayout.setHorizontalGroup(
            panelTablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(panelTablaLayout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 476, Short.MAX_VALUE)
                .addContainerGap())
        );
        panelTablaLayout.setVerticalGroup(
            panelTablaLayout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, panelTablaLayout.createSequentialGroup()
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 415, Short.MAX_VALUE)
                .addContainerGap())
        );

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addComponent(panelTabla, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jToolBar1, javax.swing.GroupLayout.DEFAULT_SIZE, 476, Short.MAX_VALUE)
                .addContainerGap())
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addComponent(jToolBar1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                .addComponent(panelTabla, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButtonAnadirActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonAnadirActionPerformed
        this._iFila = -1;
        this._oTACamposPremisas.inicializa();

        //Create and set up the window.
        if ( this._frmTACamposPremisasDet == null ){
            this._frmTACamposPremisasDet = new frmTACamposPremisasDet( this, true );
            this._frmTACamposPremisasDet.setLocationRelativeTo(this);
            this._frmTACamposPremisasDet.pack();
        }
        this._frmTACamposPremisasDet.inicializaFormulario('A');
        this._frmTACamposPremisasDet.setVisible(true);
    }//GEN-LAST:event_jButtonAnadirActionPerformed

    private void jButtonBorrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonBorrarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.INFORMATION_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oTACamposPremisas.vectorJTableAClavesClase( this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oTACamposPremisas.recupera();
            //Create and set up the window.
            if ( this._frmTACamposPremisasDet == null ){
                this._frmTACamposPremisasDet = new frmTACamposPremisasDet(this, true);
                this._frmTACamposPremisasDet.setLocationRelativeTo(this);
                this._frmTACamposPremisasDet.pack();
            }
            this._frmTACamposPremisasDet.inicializaFormulario('B');
            this._frmTACamposPremisasDet.setVisible(true);
        }
    }//GEN-LAST:event_jButtonBorrarActionPerformed

    private void jButtonConsultarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonConsultarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.INFORMATION_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oTACamposPremisas.vectorJTableAClavesClase( this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oTACamposPremisas.recupera();
            //Create and set up the window.
            if ( this._frmTACamposPremisasDet == null ){
                this._frmTACamposPremisasDet = new frmTACamposPremisasDet(this, true);
                this._frmTACamposPremisasDet.setLocationRelativeTo(this);
                this._frmTACamposPremisasDet.pack();
            }
            this._frmTACamposPremisasDet.inicializaFormulario('C');
            this._frmTACamposPremisasDet.setVisible(true);
        }
    }//GEN-LAST:event_jButtonConsultarActionPerformed

    private void jButtonCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonCerrarActionPerformed
        setVisible (false);
    }//GEN-LAST:event_jButtonCerrarActionPerformed

    private void jButtonModificarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButtonModificarActionPerformed
        if ( jTableDatos.getSelectedRow() == -1 )
            JOptionPane.showMessageDialog( null,"No hay ninguna fila seleccionada","Aviso", JOptionPane.INFORMATION_MESSAGE);
        else {
            this._iFila = jTableDatos.getSelectedRow();
            DefaultTableModel md = (DefaultTableModel) jTableDatos.getModel();
            //Obtenemos la clave del objeto y lo cargamos de la BD
            this._oTACamposPremisas.vectorJTableAClavesClase( this._columnIdentifiers, (Vector) md.getDataVector().get(this._iFila) );
            //Inicializo el vector global de errores
            GestorErrores.getInstancia().getvErrores().clear();
            this._oTACamposPremisas.recupera();
            //Create and set up the window.
            if ( this._frmTACamposPremisasDet == null ){
                this._frmTACamposPremisasDet = new frmTACamposPremisasDet(this, true);
                this._frmTACamposPremisasDet.setLocationRelativeTo(this);
                this._frmTACamposPremisasDet.pack();
            }
            this._frmTACamposPremisasDet.inicializaFormulario('M');
            this._frmTACamposPremisasDet.setVisible(true);
        }
    }//GEN-LAST:event_jButtonModificarActionPerformed


    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButtonAnadir;
    private javax.swing.JButton jButtonBorrar;
    private javax.swing.JButton jButtonCerrar;
    private javax.swing.JButton jButtonConsultar;
    private javax.swing.JButton jButtonModificar;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JToolBar.Separator jSeparator1;
    private javax.swing.JTable jTableDatos;
    private javax.swing.JToolBar jToolBar1;
    private javax.swing.JPanel panelTabla;
    // End of variables declaration//GEN-END:variables

    class ModeloTabla extends DefaultTableModel {
        /*
         * Sobreescribo el método para impedir que las celdas sean editables
         */
        public boolean isCellEditable(int row, int col) {
            return false;
        }
    }
}
